cmake(11):将可执行和库文件分别输出到指定目录 | 您所在的位置:网站首页 › cmake依赖目录 编译完成 › cmake(11):将可执行和库文件分别输出到指定目录 |
1. 说明
当一个工程编译后包含多个可执行和库文件,将这些文件分别放置在对应的目录里面会使得工程看起来更有序…(当然,这些都是我编的,毕竟要给自己找个理由) 这篇笔记用于记录如何使用cmake在编译后将库文件和可执行文件生成在指定目录。 2. 示例仍然以之前的代码为例。 在主CMakeLists.txt文件中设置目录路径 # 设置静态库文件目录 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # 动态库文件目录 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # 可执行文件目录 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)在各个库代码的子CMakeLists.txt文件中关联目录 link_directories (${CMAKE_LIBRARY_OUTPUT_DIRECTORY})其实这一步没有必要,因为在编译可执行文件的cmake file里已经添加了target_link_directories()命令了,出于学习目的,这里选择加上。 2.1 变量说明CMAKE_ARCHIVE_OUTPUT_DIRECTORY 表示将所有的静态库文件放在哪个目录里,这个变量会初始化ARCHIVE_OUTPUT_DIRECTORY属性。 CMAKE_LIBRARY_OUTPUT_DIRECTORY 表示将所有构建的动态库文件放在哪个目录,这个变量会初始化LIBRARY_OUTPUT_DIRECTORY属性。 2.2 link_directories命令解析这个命令用于将指定目录添加链接器的路径内,既可以是绝对路径也可以是相对路径,这个命令仅对其后生成的目标有效。命令格式如下: link_directories([AFTER|BEFORE] directory1 [directory2 ...]) AFTER|BEFORE:表示指定目录是放在链接器当前路径的前面还是后面,默认是AFTER注:现在极少使用这个命令,如有必要cmake官方建议使用target_link_directories()命令代替。 3. 将头文件放在同一个目录这里添加一个在工程中将所有的头文件都放在同一个目录中的用法。(因为这两个内容实在是太少了) 还是以前面的工程为例。 将math和utility下的两个头文件都放在include目录下 ├── include │ ├── math │ │ └── add.h │ └── utility │ └── utils.h 在主CMakeLists.txt文件中包含头文件 # include include_directories(${PROJECT_SOURCE_DIR}/include) include_directories(${PROJECT_SOURCE_DIR}/include/math) include_directories(${PROJECT_SOURCE_DIR}/include/utility)这里include及其子目录要分别包含。 4. 总结没有总结,只是我又水了一篇文档。 参考链接CMake Document |
CopyRight 2018-2019 实验室设备网 版权所有 |